
/**
 * demo说明： 替换里面的颜色值为 16进制
 */

const postcss = require('postcss')
const fs = require('fs')
const path = require('path')
const prettier = require('prettier')
const prettierConfig = require('../prettierrc')


function rgbToHex(r, g, b) {
  // 将RGB的每个分量转换为十六进制字符串
  const hexR = r.toString(16).padStart(2, '0');
  const hexG = g.toString(16).padStart(2, '0');
  const hexB = b.toString(16).padStart(2, '0');

  // 组合成十六进制颜色值
  const hexColor = `#${hexR}${hexG}${hexB}`;

  return hexColor;
}

// console.log(rgbToHex(12,25,36));


// 拿到文件内容
let content = fs.readFileSync(path.resolve(__dirname, 'test.scss'), 'utf8')

const root = postcss.parse(content)
let reg = /\d+/g

const traver = (node)=> {
  console.log(node);

  if (node.type=== 'decl' && node.value.indexOf('rgb') !== -1) {
    // 将rgb 中的数字都提取出来

    let rgbList = node.value.match(reg)

    node.value = rgbToHex(...rgbList)
  }

  if(node.nodes && node.nodes.length) {
    for(let childNode of node.nodes) {
      traver(childNode)
    }
  }
}

traver(root.nodes[0])

let outputContent = root.toString()

prettier
	.format(outputContent, {
		// 普通项目里面的 prettier 配置文件对象
		...prettierConfig,
		// 一定要传这个， 表示用什么语法解析器
		parser: 'scss',
	})
	.then((res) => {
		fs.writeFileSync(
			path.resolve(__dirname, Date.now().toString() + '.scss'),
			res
		)
	})



